package com.duck.common.config;

import com.duck.common.interceptors.UserInfoInterceptor;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
//我们写的网关没有spring mvc框架，gateway底层框架是基于web flask（好像）实现的，所以网关不能扫描到配置类
//对于网关来说，这里直接引用的配置类是没有的，因为这个实现的接口需要有实体（网关pom文件中引入了common这个包）
//@ConditionalOnClass是Spring Boot中的一个条件注解，它可以用来指定在类路径中存在特定的类时才加载某个配置类或Bean。
//这个注解可以用于自动配置类或普通的Spring组件中，以实现根据类路径中的情况来决定是否加载某个配置或Bean。
//由于spring mvc不基于spring 所以他不会扫描到这个配置，就不会生效
//除了hm-gateway,其他的底层都是springMVC，那要想不让网关得到这个WebMvcconfigurer配置，那就要利用SpringMVC的特点去排除它，SprngMVC都有一个DispatcherServlet的api。
@ConditionalOnClass(DispatcherServlet.class)
public class MVCConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new UserInfoInterceptor());
    }
}